This invention relates to programming and reprogramming the hardware configuration of a (PCMCIA) card.
Personal computer memory card international association (PCMCIA) cards are computer cards that meet the minimum compliance requirements of the PCMCIA standard (e.g., release 2.1, which is hereby incorporated by reference). PCMCIA cards are typically used to add functionality or memory to a personal, portable, or desktop computer (i.e., host computer), as described in PCMCIA Standard release 2.1. The most popular PCMCIA cards are fax/modems and memory cards used in laptop computers. For example, a memory card having a hard disk drive can provide 200 MB of additional memory. Many other PCMCIA cards are available, including input/output (I/O) PCMCIA cards that transfer data between a host computer system and an I/O bus and data acquisition cards. Typically, data acquisition cards receive and digitize analog information from sensors and temporarily store the information before transferring it to the host computer. Additionally, data acquisition cards are used by the host computer to send control and data signals to external analog and digital controllers.
A typical PCMCIA card includes a standard PCMCIA connector connected to a PCMCIA interface circuit through a standard PCMCIA bus. The PCMCIA interface circuit operates according to the standard PCMCIA protocol to send data to and receive data from a host computer. The typical PCMCIA card also includes a PCMCIA card controller that sends data to and receives data from the PCMCIA interface circuit and controls the operation of the functional hardware on the card. For example, if the PCMCIA card is a memory card, then the functional hardware is memory (e.g., a bank of random access memory (RAM) chips (static or dynamic) or a hard disk drive) and the PCMCIA card controller controls reading and writing to the memory.
PCMCIA card controllers and interface circuits can be implemented as hardwired logic (e.g., one or more custom gate arrays) or as programmable logic (e.g., one or more field programmable gate arrays (FPGAS). FPGAs are typically programmed for operation whenever power is cycled off and then on. For example, if a PCMCIA card is inserted within a powered-up host computer or inserted into a powered-down host computer that is then powered-up, the PCMCIA card FPGA is programmed.
The programmable architecture of FPGAs is provided through programmable logic blocks interconnected by a hierarchy of routing resources. The devices are customized by loading programming data into internal static memory cells. FPGA programming data are design-specific data that define the functional operation of the FPGA's internal blocks and their interconnections (e.g., the functional operation of the PCMCIA card controller and interface circuit).
Typically, when a PCMCIA card, having the PCMCIA card controller and interface circuit implemented in an FPGA(s), is inserted in an operating (i.e., powered) host computer or is inserted in a powered down host computer that is then powered-up, the FPGA is programmed with FPGA programming data stored in non-volatile memory (e.g., EPROM, EEPROM, Flash memory, etc.) on the PCMCIA card. The EPROM(s) required to store the FPGA programming data generally consumes a large amount of the PCMCIA card real estate.